/**
 * description：请求返回数据处理
 * author：
 * */

export default {
    /* todo 动态表单，双向绑定key集合 */
    /*
    * @params：
    *   configData<Array>:[{configItem}]
    *       configItem<Object>:{name:'formModelKey',id:'',label:''}
    *   key<string>：configItem对象中，返回数据key的key
    *       {name:'formModelKey',id:'',label:''}
    * @return：
    *   {key:value}
    *  */
    getFormModelData(configData=[],key=''){
        if(!Array.isArray(configData)) return {};
        let returnObject={};
        configData.forEach(item=>{
            returnObject[item[key]]='';
        });
        return returnObject;
    },
    /* todo 动态表单数据处理 */
    formItemDynamic(data){
        if(!Array.isArray(data)) return [];
        return data.map((item,index)=>{
            item = Object.assign({},item);
            item.key = item.key || index.toString();
            item.type = item.type || 'input';
            return item;
        })
    },
    // todo table数据处理
    /* 动态表格数据处理
        @props:
            options<Object>:除正常列外的特殊列，如操作、index、selection等
                {isOperate<key>是否含有操作列,：renderCell<value>,操作列render函数},
                {isIndex:是否含index列}
    *  */
    tableColumnDynamic(data,options){
        let columnArr=[];
        if(!Array.isArray(data)) return columnArr;

        columnArr=data.map((item,index)=>{
            item=Object.assign({},item);
            item.key = item.key || index.toString();
            item.minWidth = item.minWidth || 180;
            return item;
        });
        /* 内置操作列 */
        if(options&&options.isOperate){
            let operateColumn = {
                key: data.length.toString(),
                label: "操作",
                fixed: "right",
                renderCell:options.isOperate
            };
            columnArr.push(operateColumn);
        }
        /* 内置index列 */
        if(options&&options.isIndex) columnArr.unshift({key: '0', type: 'index', label: '序号', width: 60});
        return columnArr
    },
    // todo Cascader 级联选择器
    /*
        description：删除Cascader 级联选择器最后一级的children属性
        @props：
            data：tree data
    *  */
    removeTreeLastChildrenProp(data){
        function recurrence(currentNode){
            for(let i=0;i<currentNode.length;i++){
                let node=currentNode[i];
                if(node.children&&node.children.length){
                    recurrence(node.children);
                }else{
                    delete node.children;
                }
            }
        }
        recurrence(data.concat(data));
        return data;
    }
}
